import {
	fileAnalysis,
	downloadTemplate,
	exportErrorRecord
} from "../api/fixed-warehousing.js";
import BaseLoad from "@/assets/vue-mixin/BaseLoad";
import dbl from "@/utils/dbl";
export default {
	name: "batchImport",
	data() {
		return {
			// hxf-0918-步骤条默认选中
			active: 0,
			// hxf-0918-tab默认选中
			activeName: "first",
			// hxf-0918-table数据存放
			batchImportTableData: {
				successList: [],
				errorList: []
			},
			successTotal: 0,
			errorTotal: 0,
			flag: 0,
			mes: 0,
			submitData: "",
			Smile: require("@/assets/images/Smile-icon.png"),
			// hxf-0918-文件上传
			// publicServiceFacilityFile: '',
			fileList: [],
			myHeader: { Authorization: dbl.get("token") },
			filePath: ""
		};
	},
	methods: {
		// hxf-0918-上一步
		handleClickPrev() {
			this.$confirm("返回上一步数据将会丢失, 是否继续?", "提示", {
				confirmButtonText: "确定",
				cancelButtonText: "取消",
				type: "warning"
			})
				.then(() => {
					if (this.active-- < 0) this.active = 0;
				})
				.catch(() => {
					this.$message({
						type: "info",
						message: "已取消上一步"
					});
				});
		},
		// hxf-0918-下一步
		handleClicknext() {
			if (this.active === 0) {
				if (this.fileList.length > 0) {
					this.filePath = this.fileList[0].path;
					if (this.filePath === undefined) {
						this.$message.error("找不到文件路径，请联系管理员！");
					} else {
						this.loadAction("数据加载中");
						fileAnalysis(this.filePath)
							.then(resp => {
								if (resp.data.code === 0) {
									this.batchImportTableData.errorList =
										resp.data.data.errorList;
									this.batchImportTableData.successList =
										resp.data.data.successList;
									this.successTotal = this.batchImportTableData.successList.length;
									this.errorTotal = this.batchImportTableData.errorList.length;
									this.mes = resp.data.data.mes;
									this.flag = resp.data.data.flag;
									this.loadClose();
									if (this.flag == false) {
										this.$message({
											type: "info",
											message: "文件解析没有数据，请检查上传的文件是否正确"
										});
									} else {
										this.active++;
									}
								}
							})
							.catch(error => {
								this.loadClose();
								this.$message({
									type: "error",
									message: "文件解析失败"
								});
							})
							.finally(() => this.loadClose());
					}
				} else {
					this.$message.error("请先上传文件！");
				}
			} else {
				this.active++;
			}
		},
		// hxf-0918-完成
		handleClickSubmit() {
			//关闭当前新增页，暂时没找到好办法
			this.$store.commit("delHistoryRoute", this.$route.fullPath);
			// this.$parent.$children[2].closeTab('current')
			//跳转
			this.$router.push("/asset-management/fixed-warehousing-list");
		},
		// hxf-0918-tab选中事件
		handleTabClick(tab, event) {
			// console.log(tab, event);
		},
		//hxf-0918-文件移除
		handleRemove(file, fileList) {
			this.fileList = fileList;
		},
		/**
		 * 下载模板
		 */
		downTemplate() {
			const { origin, pathname } = window.location;
			window.location.href = `${origin}/${
				pathname.split("/")[1]
			}/资产入库导入模板.xls`;
		},
		/**
		 * 下载模板
		 */
		download() {
			downloadTemplate()
				.then(res => {
					this.loadAction("数据加载中");
					// 此处有个坑。这里用content保存文件流，最初是content=res，但下载的test.xls里的内容如下图1，
					// 检查了下才发现，后端对文件流做了一层封装，所以将content指向res.data即可
					// 另外，流的转储属于浅拷贝，所以此处的content转储仅仅是便于理解，并没有实际作用=_=
					const content = res.data;
					const blob = new Blob([content]); // 构造一个blob对象来处理数据
					const fileName = "资产入库导入模板.xls"; // 导出文件名
					// 对于<a>标签，只有 Firefox 和 Chrome（内核） 支持 download 属性
					// IE10以上支持blob但是依然不支持download
					if ("download" in document.createElement("a")) {
						// 支持a标签download的浏览器
						const link = document.createElement("a"); // 创建a标签
						link.download = fileName; // a标签添加属性
						link.style.display = "none";
						link.href = URL.createObjectURL(blob);
						document.body.appendChild(link);
						link.click(); // 执行下载
						URL.revokeObjectURL(link.href); // 释放url
						document.body.removeChild(link); // 释放标签
						this.loadClose();
					} else {
						// 其他浏览器
						navigator.msSaveBlob(blob, fileName);
						this.loadClose();
					}
					this.btnSendTem = false;
				})
				.catch(error => {
					this.loadClose();
					this.$message({
						type: "error",
						message: "操作失败"
					});
				})
				.finally(() => this.loadClose());
		},
		// hxf-0918-文件上传前的钩子
		/*handleChange(file) {
            console.log('file----',file)
            this.publicServiceFacilityFile = file.raw
        },*/
		/**
		 * 上传完成给fileList赋值
		 */
		uploadSuccess(response, file, fileList) {
			if (response.code === 0) {
				//拿到文件名
				let fileName = file.name;
				//拿到上传的文件地址
				// let filePath = file.response.data[0].path;
				let filePath = file.name;
				let files = { name: "", path: "" };
				files.name = fileName;
				files.path = filePath;
				this.fileList.push(files);
			} else {
				this.$message.error(response.msg);
				this.handleRemove();
			}
		},
		handleExceed(files, fileList) {
			// this.$message.warning(`当前限制选择 1 个文件，本次选择了 ${files.length} 个文件，共选择了 ${files.length + fileList.length} 个文件`);
			this.$message.warning(`当前限制选择 1 个文件`);
		},
		// hxf-0918-导出异常数据
		handleDownError() {
			if (this.batchImportTableData.errorList.length < 1) {
				this.$message.error("当前无异常数据！");
			} else {
				exportErrorRecord(this.batchImportTableData.errorList).then(res => {
					this.loadAction("数据加载中");
					// 此处有个坑。这里用content保存文件流，最初是content=res，但下载的test.xls里的内容如下图1，
					// 检查了下才发现，后端对文件流做了一层封装，所以将content指向res.data即可
					// 另外，流的转储属于浅拷贝，所以此处的content转储仅仅是便于理解，并没有实际作用=_=
					const content = res.data;
					const blob = new Blob([content]); // 构造一个blob对象来处理数据
					const fileName = "资产入库异常记录.xls"; // 导出文件名
					// 对于<a>标签，只有 Firefox 和 Chrome（内核） 支持 download 属性
					// IE10以上支持blob但是依然不支持download
					if ("download" in document.createElement("a")) {
						// 支持a标签download的浏览器
						const link = document.createElement("a"); // 创建a标签
						link.download = fileName; // a标签添加属性
						link.style.display = "none";
						link.href = URL.createObjectURL(blob);
						document.body.appendChild(link);
						link.click(); // 执行下载
						URL.revokeObjectURL(link.href); // 释放url
						document.body.removeChild(link); // 释放标签
						this.loadClose();
					} else {
						// 其他浏览器
						navigator.msSaveBlob(blob, fileName);
						this.loadClose();
					}
					this.btnSendTem = false;
					this.loadClose();
				});
			}
		}
	},
	mixins: [BaseLoad]
};
